<?php namespace Common\Model;
use Hdphp\Model\Model;

class Art extends Model{
	protected $table = 'article';
	
//	 public $relation = array(
//      'category' => array(// 关联表
//          'type' => HAS_ONE, // 包含一条主表记录
//          'foreign_key' => 'category_cid', //关联字段
//          'parent_key' => 'cid', //user 主键
//      )
//	);
	
	//设置自动验证用户提交过来的参数
	protected $validate = array(
		//array(字段名,验证方法,错误信息,验证条件,验证时间)
		array('title','required','文章标题不能为空',3,3),
//		array('ctitle','required','分类标题不能为空',3,3),
//		array('ctitle','maxlen:120','分类标题不得超过120个字符',3,3)
	);
	
	//设置自动完成
	protected $auto=[
        //array(字段名,处理方法,方法类型,验证条件,处理时间) 
        array('sendtime','time','function',3,1),//自动处理发布时间
		array('updatetime','time','function',3,3),
		array('user_uid','getUid','method',3,1),
		array('thumb','getThumb','method',3,3)//获取缩略图地址
    ];
	
	public function getUid(){
	    return $_SESSION['uid'];
	}
	//处理上传的图片 返回处理后的地址
	public function getThumb(){
//		p($_FILES);exit;
	    $files=Upload::type('jpg,png,jpeg,gif')->make();//成功会返回 地址
	    
	    if($files){
	    	$path = $files[0]['path'];
			$thumPath = substr_replace($path,"_thum.",strripos($path,'.'),1);//组建缩略图地址
			Image::thumb($path,$thumPath,600,300,5);
			
	    	return  $thumPath;
	    }
		//p(Upload::getError());exit;
		$this->error=Upload::getError();//将上传错误信息 传入到 模型的错误里
		return '';
	}
	public function myadd(){
		if($this->check()){
			//p($this->data);exit;
			
			//1、添加article表 并返回 主键id
			$aid = $this->add();
			//2、添加article_data表
			$arcDataModel = new \Common\Model\ArcData;
			$arcDataModel->create();
			$arcDataModel->data['article_aid'] = $aid;
			$arcDataModel->add();
			//3.添加article_tag中间表
			$arcTagModel = new \Common\Model\ArcTag;
			$arcTagModel->store($aid);
			
			return true;
		}
		
		return false;
	}
	//验证2张表
	private function check(){
		//create方法：让$this->data有数据，触发自动验证自动完成
		if(!$this->create()) return false;
		//判断如果$this->error有错误信息，那么就是上传失败了
		if($this->error) return false;
		//验证article_data表
		$arcDataModel = new \Common\Model\ArcData;
		if(!$arcDataModel->create()){
			//把arcData模型的错误压入到当前模型，这样外部控制才能获取到错误
			$this->error = $arcDataModel->getError();
			return false;
		}
		return true;
	}
	
	//修改
	public function edit(){
		//一、先验证***********
		if(!$this->check())	return false;
		
		//二、修改***********
		//1.article
		$this->save();
		
		//2.article_tag 中间表
		$arcTagModel = new \Common\Model\ArcTag;
		//接收隐藏域的aid
		$aid = Q('post.aid',0,'intval');
		//先删除
		$arcTagModel->where("article_aid={$aid}")->delete();
		//再添加
		$arcTagModel->store($aid);
		
		//3.article_data
		$arcDataModel = new \Common\Model\ArcData;
		$arcDataModel->create();
		$arcDataModel->where("article_aid={$aid}")->save();
		
		return true;
		
		
	}
	
	//获取文章 和对应的分类 是否获取回收站
	public function myget($is_recycle=false){
		//select * from article join category on category_cid=cid;
		//p($this->all());exit;
		//$mydb =  Db::slect('select * from article join category on category_cid=cid');
		if($is_recycle){
			$mydb = Db::table('article')->join('category','article.category_cid','=','category.cid')->where('is_recycle=1')->get();
		}else{
			$mydb = Db::table('article')->join('category','article.category_cid','=','category.cid')->where('is_recycle=0')->limit(Page::limit())->get();
		}
			
		
		//p($mydb);exit;
		return $mydb;
	}
}
